10
תגובות
חסימת קללות
פתח
razand
,
אני עובד על פינקציה שחוסמת קללות..
יש מערך שיש בו לדוגמה:
איך אני יכול לבדוק עם המילים בערך מופיעות במשפט שהוכנס.
וגם איך אני יכול לעשות ש * זה בעצם כל תו \ תוים שיש באמצע.
יש מערך שיש בו לדוגמה:
$array = array('wor*l','world*');
איך אני יכול לבדוק עם המילים בערך מופיעות במשפט שהוכנס.
וגם איך אני יכול לעשות ש * זה בעצם כל תו \ תוים שיש באמצע.
10 תשובות
אתה מכיר REGEX?
אתה יכול להכין מאגר ב-MySQL.. של כל הקללות.. ופשוט לבצע שאילתא עם LIKE ו-%.
ולעשות str_replace ל-* לתו %..
תיצור קובץ .txt שיכיל מילים שאתה רוצה לצנזר (מופרדות בפסיקים).
enter,any,word,here
בכל דף שבו אתה אמור להשתמש במילים האלו (לצינזור,לעריכה) (או בדף שיהיה included בכל הדפים) תעשה בקשת file_get_contents לקובץ ותפריד את הערכים.
$words = explode(',',file_get_contents('words.txt'))
בדפים שבהם אתה מצנזר (הדף שבו שולחים את הפוסטים או מה שזה לא יהיה), לפני ההכנסה למסד, תחליף את המילים בכוכביות לפי מספר התויים.
foreach ($words as $key => $word) str_replace($word,str_repeat('*',strlen($word)),$str);
אז תבדוק בעזרת strpos אם המחרוזת נמצאת שם, אם כן תשנה את הערך לtrue ואם לא אז לfalse
foreach ($words as $key => $word) {
$has = (strpos($str,$word) === false) ? false : true;
// do something with this
}
$has = (strpos($str,$word) === false) ? false : true;
// do something with this
}
אז אתה כן רוצה להחליף את המילה בכוכביות?
תכניס את הקוד שבתוך ה-foreach שנתתי קודם לבלוק foreach החדש
foreach ($words as $key => $word) {
$has = (strpos($str,$word) === false) ? false : true;
str_replace($word,str_repeat('*',strlen($word)),$str);
// do something with this
}
$has = (strpos($str,$word) === false) ? false : true;
str_replace($word,str_repeat('*',strlen($word)),$str);
// do something with this
}
לא להחליף
אני רוצה ש * תיהיה כל מחרוזת אפשרית..
לדוגמה עם אני יעשה דו*גמה
אז עם יכתבו דוווווווווווווווווווווווווווווווווווגמה אז זה גם יחזיר False
אז אז regex
וזה בידיוק כמו שכתבת: דו*גמה מסמל "דו"+האות ו' רצופה+"גמה".
$has = preg_match('/דו*גמה/g',$str)